package mh;

/**
 * WARNING TEST CLASS!!!!!
 * 
 * @author gianmarcolaggia
 * 
 */
public class UDPMulticastServer {
	//
	//	public static void main(String[] arg) {
	//		byte[] buffer = new byte[65535];
	//		try {
	//			int port = 5000;
	//			MulticastSocket sock = new MulticastSocket(5000);
	//			InetAddress addr = InetAddress.getByName("235.0.0.1");
	//			sock.joinGroup(addr);
	//			while (true) {
	//				DatagramPacket packet = new DatagramPacket(buffer, buffer.length, addr, port);
	//				sock.receive(packet);
	//				String address = packet.getAddress().toString();
	//				InetAddress client = packet.getAddress();
	//				int client_port = packet.getPort();
	//				System.out.println("Received : '" + new String(buffer).trim() + "' from " + address + "\n");
	//				// send information to the client
	//				String message = "RECEIVED";
	//				buffer = message.getBytes();
	//				packet = new DatagramPacket(buffer, buffer.length, client, client_port);
	//				sock.send(packet);
	//			}
	//		} catch (IOException e) {
	//			// TODO Auto-generated catch block
	//			e.printStackTrace();
	//		}
	//
	//	}
}
//import java.awt.event.ActionEvent;
//import java.awt.event.ActionListener;
//import java.io.IOException;
//import java.net.DatagramPacket;
//import java.net.InetAddress;
//import java.net.MulticastSocket;
//import java.net.UnknownHostException;
//
//import javax.swing.JButton;
//import javax.swing.JFrame;
//import javax.swing.JPanel;
//import javax.swing.JRootPane;
//import javax.swing.JScrollPane;
//import javax.swing.JTextArea;
//
//public class UDPMulticastServer {
//	JFrame			frame;
//	JPanel			panel;
//	JButton			button1, button2;
//	JTextArea		area;
//	JScrollPane		pane;
//	Thread			thread;
//	MulticastSocket	socket;
//
//	public static void main(String[] args) {
//		UDPMulticastServer u = new UDPMulticastServer();
//	}
//
//	public UDPMulticastServer() {
//		this.frame = new JFrame("Broadcast Server");
//		this.frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//		this.frame.setUndecorated(true);
//		this.frame.getRootPane().setWindowDecorationStyle(JRootPane.PLAIN_DIALOG);
//		this.panel = new JPanel();
//		this.panel.setLayout(null);
//		this.area = new JTextArea();
//		this.button1 = new JButton("Start");
//		this.button1.setBounds(210, 10, 75, 40);
//		this.button1.addActionListener(new ActionListener() {
//			@Override
//			public void actionPerformed(ActionEvent e) {
//				new StartServer();
//			}
//		});
//		this.panel.add(this.button1);
//		this.button2 = new JButton("Stop");
//		this.button2.setBounds(300, 10, 75, 40);
//		this.button2.addActionListener(new ActionListener() {
//			@Override
//			public void actionPerformed(ActionEvent ae) {
//				UDPMulticastServer.this.thread.interrupt();
//				UDPMulticastServer.this.socket.close();
//				UDPMulticastServer.this.area.append("Server is stopped\n");
//				UDPMulticastServer.this.button1.setEnabled(true);
//				UDPMulticastServer.this.button2.setEnabled(false);
//			}
//		});
//		this.panel.add(this.button2);
//		this.pane = new JScrollPane(this.area);
//		this.pane.setBounds(10, 60, 365, 250);
//		this.panel.add(this.pane);
//		this.frame.add(this.panel);
//		this.frame.setSize(400, 400);
//		this.frame.setVisible(true);
//	}
//
//	public class StartServer implements Runnable {
//		InetAddress	address;
//
//		StartServer() {
//			UDPMulticastServer.this.thread = new Thread(this);
//			UDPMulticastServer.this.thread.start();
//			UDPMulticastServer.this.button1.setEnabled(false);
//			UDPMulticastServer.this.button2.setEnabled(true);
//		}
//
//		@Override
//		public void run() {
//			try {
//				byte[] buffer = new byte[65535];
//				int port = 5000;
//				String address = "224.0.0.0";
//				String address1 = "235.0.0.1";
//				String address2 = "235.255.0.1";
//				String address3 = "224.0.255.1";
//				String addresStr[] = { address, address1, address2, address3 };
//				try {
//					UDPMulticastServer.this.socket = new MulticastSocket(port);
//					InetAddress add = InetAddress.getByName(address);
//					UDPMulticastServer.this.socket.joinGroup(add);
//					InetAddress add1 = InetAddress.getByName(address1);
//					UDPMulticastServer.this.socket.joinGroup(add1);
//					InetAddress add2 = InetAddress.getByName(address2);
//					UDPMulticastServer.this.socket.joinGroup(add2);
//					InetAddress add3 = InetAddress.getByName(address3);
//					UDPMulticastServer.this.socket.joinGroup(add3);
//					InetAddress str[] = { add, add1, add2, add3 };
//					UDPMulticastServer.this.area.append("Server is started\n");
//					while (true) {
//						try {
//							// Receive request from client
//							for (int i = 0; i < str.length; i++) {
//								DatagramPacket packet = new DatagramPacket(buffer, buffer.length, str[i], port);
//								UDPMulticastServer.this.socket.receive(packet);
//								addresStr[i] = packet.getAddress().toString();
//								InetAddress client = packet.getAddress();
//								int client_port = packet.getPort();
//								UDPMulticastServer.this.area.append("Received : '" + new String(buffer).trim() + "' from " + addresStr[i] + "\n");
//								// send information to the client
//								String message = "Sent by " + addresStr[i] + "\n";
//								buffer = message.getBytes();
//								packet = new DatagramPacket(buffer, buffer.length, client, client_port);
//								UDPMulticastServer.this.socket.send(packet);
//							}
//						} catch (UnknownHostException ue) {
//						}
//					}
//				} catch (java.net.BindException b) {
//				}
//			} catch (IOException e) {
//				System.err.println(e);
//			}
//		}
//	}
// }